package floyd;

import java.util.List;
import java.util.Set;

public class Run {
	/**
	 * 本方法调用要求begin的id尽量连续保证时间复杂度。要求设置传入id通过运算统一减1，返回的路径节点id统一运算加1【需保证编号以0为基数，不无故中断节点】
	 * @Title doing
	 * @Description 计算最佳路径
	 * @param begin 起始点的id（从0开始）
	 * @param end 结束点的id （从0开始）
	 * @param matrixs 点线距离集合
	 * @return
	 * @throws TODO
	 */
	public static List doing(int begin,int end,Set<Matrix> matrixs) {
		int[][] array=Dyadic.init(matrixs);
		int size=array.length;
		
//		Dyadic.draw(size, array);
		
		Floyd graph = new Floyd(size);
		graph.findCheapestPath(begin,end,array);
		
		List list = graph.getResult();
		
		System.out.println("The shortest path " + begin + " -> " + end + " is: ");
		System.out.println(list.toString());
		System.out.println("The length of shortest path is " + graph.getDist()[begin][end]);
		
		return list;
	}

	
}
